package Chuong04;

import java.awt.*;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Bai08 extends JFrame implements ActionListener{

	JButton btnPS =  new JButton("Phát sinh");
	JButton btnThoat =  new JButton("Thoát");
	JTextField txtPT =  new JTextField(5);
	
	JButton btnSapTang = new JButton("Sắp tăng");
    JButton btnMax = new JButton("Tìm phần tử max");
    JButton btnMin = new JButton("Tìm phần tử min");
    JButton btnChan = new JButton("Tìm những số chẵn");
    
    JButton btnBoiSo = new JButton("Tìm những số là bội số của 3 và 5");
    JButton btnSNT = new JButton("Tìm những số là số nguyên tố");
    
    JButton btnXoa = new JButton("Xóa điều khiển chứa:");
    
    JCheckBox chkMax = new JCheckBox("Phần tử max");
    JCheckBox chkChan = new JCheckBox("Phần tử chẳn");
    JCheckBox chkSNT = new JCheckBox("Số nguyên tố");
    
    JCheckBox chkMin = new JCheckBox("Phần tử min");
    JCheckBox chkBoiSo = new JCheckBox("Phần tử là bội số của 3 và 5");
	
	JPanel p = new JPanel();
	JPanel p1, p2, p3, p4, p5, p6, p7;
	int n = 0;
	JTextField[] txtPhanTu;
	int[] a;
	
	private void SapTang(int[]a, int n){
		for(int i = 0; i < n - 1; i++){
			txtPhanTu[i].setBackground(Color.WHITE);
			for(int j = i + 1; j < n; j++){
				if(a[i] >= a[j]){
					int t = a[i];
					a[i] = a[j];
					a[j] = t;
				}
			}
		}
		
		for(int i = 0; i < n; i++){
			txtPhanTu[i].setText(String.valueOf(a[i])); 
		}
	}
	
	private void Max(int[]a, int n){
		int k = -1;
		int m = a[0];
		for(int i = 0; i < n; i++){
			txtPhanTu[i].setBackground(Color.WHITE);
			if(m <= a[i]){
				m = a[i];
				k = i;
			}
		}
		txtPhanTu[k].setBackground(Color.RED);
	}
	
	private void Min(int[]a, int n){
		int k = -1;
		int m = a[0];
		for(int i = 0; i < n; i++){
			txtPhanTu[i].setBackground(Color.WHITE);
			if(m >= a[i]){
				m = a[i];
				k = i;
			}
		}
		txtPhanTu[k].setBackground(Color.GREEN);
	}
	
	private void Chan(int[]a, int n){
		for(int i = 0; i < n; i++){
			if(a[i] % 2 == 0)
				txtPhanTu[i].setBackground(Color.RED);
			else txtPhanTu[i].setBackground(Color.WHITE);
		}		
	}
	
	private void BoiSo(int[]a, int n){
		for(int i = 0; i < n; i++){
			if(a[i] % 3 == 0 && a[i] % 5 == 0)
				txtPhanTu[i].setBackground(Color.cyan);
			else txtPhanTu[i].setBackground(Color.WHITE);
		}
	}
	
	private boolean isNguyenTo(int n){
		boolean resuft = true;
		if(n >= 2){
			for(int i = 2; i < n; i++){
				if(n % i == 0) resuft = false;
			}
		}
		else resuft = false;
		return resuft;
	}

	private void SoNguyenTo(int[]a, int n){
		for(int i = 0; i < n; i++){
			if(isNguyenTo(a[i]))
				txtPhanTu[i].setBackground(Color.GRAY);
			else txtPhanTu[i].setBackground(Color.WHITE);
		}
	}
	
	private void Xoa(int[]a, int n){
		
		if(chkMax.isSelected()){
			int m = a[0], isVT = 0;
			for(int i = 0; i < n; i++){
				if(m <= a[i]){
					m = a[i];
					isVT = i;
				}
			}
			txtPhanTu[isVT].setText(" ");
		}
		
		if(chkMin.isSelected()){
			int m = a[0], isVT = 0;
			for(int i = 0; i < n; i++){
				if(m >= a[i]){
					m = a[i];
					isVT = i;
				}
			}
			txtPhanTu[isVT].setText(" ");
		}
		
		for(int i = 0; i < n; i++){			
			txtPhanTu[i].setBackground(Color.WHITE);
			
			if(chkChan.isSelected()){
				if(a[i] % 2 == 0)
					txtPhanTu[i].setText(" ");			
			}
			
			if(chkSNT.isSelected()){
				if(isNguyenTo(a[i]))
					txtPhanTu[i].setText(" ");
			}
			
			if(chkBoiSo.isSelected()){
				if(a[i] % 3 == 0 && a[i] % 5 == 0)
					txtPhanTu[i].setText(" ");
			}
		}
	}
	
	
	
	public Bai08(){
		setSize(600, 270);
	    setTitle("Bài 08 - Chương 04");
	    
	    p.setLayout(new GridLayout(7,1));
	    p1 = new JPanel(); p2 = new JPanel();
	    p1.add(new JLabel("Số lượng phần tử mảng: "));
	    p1.add(txtPT);
	    p1.add(btnPS);
	    p1.add(btnThoat); 
	    p.add(p1);   
	    
	    btnPS.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				p2 = new JPanel();
				n = Integer.parseInt(txtPT.getText());			
				p2.setLayout(new GridLayout(1, n));
				a = new int[n];
				txtPhanTu = new JTextField[n];				
				for(int i = 0; i < n; i++){
					int k = (int)(100.0*Math.random());
					txtPhanTu[i] = new JTextField();
					txtPhanTu[i].setText(String.valueOf(k));
					a[i] = k;
					p2.add(txtPhanTu[i]);
				}
				btnPS.setEnabled(false);
				txtPT.setEnabled(false);
				p.add(p2);				
				
				p3 = new JPanel();
			    p3.add(btnSapTang); p3.add(btnMax);
			    p3.add(btnMin);	p3.add(btnChan);
			    p.add(p3);
			    
			    p4 = new JPanel();			    
			    p4.add(btnBoiSo); p4.add(btnSNT);
			    p.add(p4);
			    
			    p5 = new JPanel();			    
			    p5.add(btnXoa);			    
			    p.add(p5);
			    
			    p6 = new JPanel();
			    p6.add(chkMax); p6.add(chkChan); p6.add(chkSNT);
			    p.add(p6);
			    
			    p7 = new JPanel();
			    p7.add(chkMin); p7.add(chkBoiSo);
			    p.add(p7);
			    
			    p.validate();
			}
	    });
	    
	    btnThoat.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
				
			}
		});
	   
	    btnSapTang.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				SapTang(a, n);
				
			}	
	    	
	    });
	    
	    btnMax.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Max(a, n);
				
			}	
	    	
	    });
	    
	    btnMin.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				Min(a, n);
				
			}
	    	
	    });
	    
	    btnChan.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				Chan(a, n);
				
			}
	    	
	    });
	    
	    btnBoiSo.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				BoiSo(a, n);
				
			}
	    	
	    });
	    
	    btnSNT.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				SoNguyenTo(a, n);
				
			}
	    	
	    });
	    
	    btnXoa.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				Xoa(a, n);
				
			}
	    	
	    });
	    
	    add(p);

	}
	
	public static void main(String[] args) {
		Bai08 frm = new Bai08();
		frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frm.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		
	}

}
